04-Health-Check설정

Health Check 설정

Health Check가 중요한 이유

실생활 비유

현재 Health Check 상태 확인

Target Group에서 확인

  1. EC2 콘솔대상 그룹webapp-web-targets 클릭
  2. 대상 탭에서 현재 상태 확인:
    • healthy: 정상 동작
    • unhealthy: 문제 있음
    • initial: 첫 검사 진행 중

Health Check 세부 정보 확인

상태 확인 탭에서:

Health Check 최적화

최적화된 설정 (이미 되어있다면 넘어가기)

  1. 대상 그룹webapp-web-targets 선택
  2. 작업상태 확인 설정 편집 클릭

새로운 설정:

  1. 변경 사항 저장 클릭

Health Check 테스트

정상 동작 테스트

# Web 서버에 SSH 접속
ssh -i webapp-keypair.pem ec2-user@Web서버-Public-IP

# Health Check 경로 직접 테스트
curl http://localhost/webapp/

# 200 OK 응답이 와야 정상

장애 시뮬레이션

Apache 중지해서 테스트:

# Web 서버에서 Apache 중지
sudo systemctl stop httpd

# Target Group에서 상태 변화 관찰
# healthy → unhealthy로 변경 (45초 후)

복구 테스트:

# Apache 다시 시작
sudo systemctl start httpd

# 상태 복구 확인
# unhealthy → healthy로 변경 (30초 후)

Health Check 로그 확인

ALB 액세스 로그 (선택사항)

Advanced 설정에서 액세스 로그를 S3에 저장할 수 있음:

ALB → 속성 → 액세스 로그 → 편집
S3 버킷 지정하면 모든 요청 기록 가능

서버 로그에서 Health Check 확인

# Apache 액세스 로그에서 Health Check 요청 확인
sudo tail -f /var/log/httpd/access_log

# 15초마다 다음과 같은 로그가 나타남:
# 10.0.x.x - - [날짜] "GET /webapp/ HTTP/1.1" 200 1234 

다양한 Health Check 패턴

1. 간단한 정적 페이지

경로: /health.html
내용: "OK"
장점: 빠름, 간단
단점: 실제 애플리케이션 동작 확인 안 됨

2. 애플리케이션 상태 확인 (현재 사용)

경로: /webapp/
내용: JSP 동적 페이지  
장점: 실제 WAS 동작까지 확인
단점: 약간 느림

3. 전용 Health Check API

경로: /health
내용: 데이터베이스 연결 + 서비스 상태 JSON
장점: 가장 정확한 상태 확인
단점: 별도 개발 필요

고급 설정

Sticky Sessions (Session Affinity)

사용자가 항상 같은 서버에 접속하게 하려면:

  1. 대상 그룹속성편집
  2. 고착성활성화
  3. 기간: 1800 초 (30분)

Cross-Zone Load Balancing

기본적으로 활성화됨 (가용영역 간 균등 분산)

주의사항

Health Check 과도한 요청

임계값 설정

완료 체크리스트

운영 팁

모니터링

유지보수


Health Check 최적화 완료! 이제 Auto Scaling으로 서버를 자동 확장해봅시다.

다음 단계: AWS EDU/Archive/조선대학교 AWS 멘토링/Week3.5-HA-Scalable-WebService/03-Auto-Scaling-Group/01-Auto-Scaling개념


관련 문서: AWS EDU/Archive/조선대학교 AWS 멘토링/Week3.5-HA-Scalable-WebService/02-Application-Load-Balancer/03-ALB생성및연결, AWS EDU/Archive/조선대학교 AWS 멘토링/Edu Architecture/README